<?php
/**
 * Created by PhpStorm.
 * User: Hasee
 * Date: 2020/5/13
 * Time: 10:04
 */
namespace lib\file;
class file
{
    private $file;
    private $url;
    public function __construct($file_url) //构造方法
    {
        //类new出来的时候才会触发__construct($file_url)
        if (!file_exists($file_url)||!is_file($file_url))
            //file_exists() 函数检查文件或目录是否存在,is_file() 函数检查指定的文件是否是常规的文件。
            //如果文件是常规的文件，该函数返回 TRUE。
        {
            echo 'file not';
            exit;
        }
        //"r+" （读写方式打开，将文件指针指向文件头）,可以使用 "b" 来强制使用二进制模式，这样就不会转换数据。
        //为了使用这些标记，请使用 "b" 或者 "t" 来作为 mode 参数的最后一个字符。
        $this->file=fopen($file_url,'rb+');
        $this->url=$file_url;
    }
    public function getOneLine()//读取一行
    {
        //fgets() 函数从打开的文件中返回一行。
        return fgets($this->file);
        //$file_arr=file($this->file);//函数把整个文件读入一个数组中。
        //for($i=0;$i<count($file_arr);$i++){//逐行读取文件内容
        //echo $file_arr[$dj]."<br />";
        //}
    }
    public function getALL()//读全部
    {
        //file_get_contents() 把整个文件读入一个字符串中。
        return file_get_contents($this->url);
    }
    public function set($str)//写内容
    {
        //fwrite(必需。规定要写入的打开文件,必需。规定要写入打开文件的字符串) 函数将内容写入一个打开的文件中。
        //fwrite($this->file,$str);
        //file_put_contents(规定要写入数据的文件。如果文件不存在，则创建一个新文件。
        //规定要写入文件的数据。使用 FILE_APPEND 标记，可以在文件末尾追加内容) 函数把一个字符串写入文件中。
        file_put_contents($this->url,$str,FILE_APPEND);
    }
    public function encode($to,$from='GBK')//转码
    {
        $str=$this->getALL();
        return mb_check_encoding($str,$to,$from);
    }
    public function is_eof()
    {
        //feof () 测试文件指针是否到了文件结束的位置
        //如果文件指针到了 EOF 或者出错时则返回 TRUE，否则返回一个错误（包括 socket 超时），其它情况则返回 FALSE。
        return feof($this->file);
    }
    public function __destruct()//析构函数
    {
        //fclose() 函数关闭一个打开文件。
        fclose($this->file);
    }
}

//$file=new file(__DIR__.'/ET.txt');
/*while (!$file->is_eof())//读取文件每一行
{
    echo $file->getOneLine();
}*/
//$file->getOneLine();
//$file->set('你好');
//echo $file->getALL();

//$file->getALL();